import { atom, selector, selectorFamily } from 'recoil'
import { persistAtom } from '../../config'

// 是否设置
export const isSettingAtom = atom({
  key: 'isSettingAtom',
  default: false,
  // effects: [persistAtom],
})

// 是否预览
export const isPreviewAtom = atom({
  key: 'isPreviewAtom',
  default: false,
  // effects: [persistAtom],
})

// 选中节点
export const selectedNodeAtom = atom<any>({
  key: 'selectedNodeAtom',
  default: {},
  // effects: [persistAtom],
})

// 页面数据
export const pageDataAtom = atom<Array<any>>({
  key: 'pageDataAtom',
  default: [],
  // effects: [persistAtom],
})

// 返回页面组件的数量
export const pageCountState = selector({
  key:'pageCountState',
  get: ({get}) => {
    // 要求是纯函数
    const text = get(pageDataAtom)
    return text.length
  }
})

// 根据 parent 获取页面数据
export const getPageDataByParent = selectorFamily({
  key: 'getPageDataByParent',
  get: (parent) => ({get}) => {
    return get(pageDataAtom).filter((item: any) => {
      // console.log(item)
      return item.meta.parent === parent
    });
  },

  // 可选 set
  // set: (multiplier) => ({set}, newValue) => {
  //   set(myNumberState, newValue / multiplier);
  // },
});

// // 更新页面中的某个组件
// export const updatePageItem = selectorFamily({
//   key: 'updatePageItem',
//   get: (parent) => ({get}) => {
//     return get(pageDataAtom).filter((item: any) => {
//       // console.log(item)
//       return item.meta.parent === parent
//     });
//   },

//   // 可选 set
//   set: () => ({set}, newValue) => {
//     set(pageDataAtom, newValue);
//   },
// });